package com.meatball.dji.common.mqtt.handler.request.data.vo

import com.alibaba.fastjson2.annotation.JSONField

/**
 * TODO 设备绑定信息返回参数
 *
 * @see com.meatball.dji.common.mqtt.data.model.ConfigModel
 *
 * @author 张翔宇
 * @since 2024年4月22日
 */
data class BindStatusReplyParams(
    val tid: String,
    val bid: String,
    val timestamp: Long = System.currentTimeMillis(),
    val gateway: String,
    val method: String,
    val data: Data
) {
    /**
     * TODO 数据
     *
     * @property result 服务端响应的结果码
     *      非 0 代表错误
     * @property output 服务消息内容
     *      服务端响应设备的消息内容
     */
    data class Data(
        val result: Int,
        val output: BindStatus
    ) {
        /**
         * TODO 绑定信息集合
         *
         * @property bindStatus 绑定信息
         *      {"size": "2"}
         */
        data class BindStatus(
            @field:JSONField(name = "bind_status")
            val bindStatus: List<BindState>
        ) {
            /**
             * TODO 绑定信息
             *
             * @property sn 设备序列号
             * @property isDeviceBindOrganization 设备是否绑定到组织
             *      {"0":"否","1":"是"}
             * @property organizationId 组织id
             * @property organizationName 组织名称
             * @property deviceCallSign 设备在组织中的名称
             */
            data class BindState(
                val sn: String,
                @field:JSONField(name = "is_device_bind_organization")
                val isDeviceBindOrganization: Boolean,
                @field:JSONField(name = "organization_id")
                val organizationId: Long,
                @field:JSONField(name = "organization_name")
                val organizationName: String,
                @field:JSONField(name = "device_callsign")
                val deviceCallSign: String
            )
        }
    }
}
